//package org.example.rest;
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//import lombok.extern.slf4j.Slf4j;
//import org.example.dto.DemoCourseInfo;
//import org.example.dto.Resp;
//import org.example.dto.StudentInfo;
//import org.springframework.format.annotation.DateTimeFormat;
//import org.springframework.web.bind.annotation.*;
//
//import java.time.LocalDateTime;
//import java.time.format.DateTimeFormatter;
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.Set;
//import java.util.Random;
//import java.util.List;
//@Slf4j
//@Api(tags = "学生信息接口")
//@RestController
//public class DmController {
//    public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
//    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
//
//    @ApiOperation(value = "根据 ID 获取学生信息")
//    @GetMapping("/studentInfo/{studentId}/get")
//    public Resp<StudentInfo> getStudentInfo(@ApiParam(value = "学生ID", required = true)@PathVariable("studentId")Long studentId) {
//        LocalDateTime now = LocalDateTime.now();
//        Random random = new Random();
//        int age = random.nextInt(15) + 1;
//        return Resp.success(StudentInfo.builder()
//                .age(age)
//                .birthDate(now.minusYears(age))
//                .studentId(1L)
//                .studentName("张三")
//                .build());
//    }
//    public static String[] mathCourseStartTimes = new String[]{
//            "8：00",
//            "9：00",
//            "10：00",
//            "11：00",
//            "14：00",
//            "15：00",
//            "16：00",
//            "16：50",
//            "17：40",
//            "18：30",
//            "19：20",
//            "20：10",
//            "21：00",
//            "22：00"};
//    public static String[] mathCourseEndTimes = new String[] {
//            "8：30",
//            "9：30",
//            "10：30",
//            "11：30",
//            "14：30",
//            "15：30",
//            "16：30",
//            "17：20",
//            "18：10",
//            "19：00",
//            "20：00",
//            "20：30",
//            "21：30",
//            "22：30"
//    };
//
//
//
//    @ApiOperation(value = "获取数学科目当前有学位的课程")
//    @GetMapping("/demoCourseInfo/math/get")
//    public Resp<List<DemoCourseInfo>> getMathDemoCourseInfo(@ApiParam(value = "教学语言")@RequestParam(value ="language")String language,
//                                                        @ApiParam(value = "阶段")@RequestParam(value ="stage")Integer stage,
//                                                            @ApiParam(value = "时间范围起始边界 格式：1999-08-07 18:00:00") @RequestParam(value ="startTime")@DateTimeFormat(pattern = DATE_TIME_PATTERN)LocalDateTime startTime,
//                                                            @ApiParam(value = "时间范围结束边界 格式：1999-08-07 23:00:00") @RequestParam(value ="endTime")@DateTimeFormat(pattern = DATE_TIME_PATTERN)LocalDateTime endTime) {
//        log.info("获取数学科目当前有学位的课程: language:{},stage:{},startTime:{},endTime:{}", language, stage, startTime, endTime);
//        List<DemoCourseInfo> list = getMathDemoCourseInfos(startTime);
//        return Resp.success(list);
//    }
//    private List<DemoCourseInfo> getMathDemoCourseInfos(LocalDateTime startTime) {
//        LocalDateTime now = LocalDateTime.now();
//        Random random = new Random();
//        int courseNum = random.nextInt(8) + 2;
//        List<DemoCourseInfo> list = new ArrayList<>();
//        int prevIndex = 0;
//        for (int i = 0; i < courseNum; i++) {
//            int seatNum = random.nextInt(3) + 1;
////            LocalDateTime courseStartTime = LocalDateTime.of(startTime.getYear(), startTime.getMonth(), startTime.getDayOfMonth(), i + 14, 0);
////            list.add(DemoCourseInfo.builder()
////                    .courseEndTime(courseStartTime.plusMinutes(40L).format(pattern))
////                    .courseId(String.valueOf(i))
////                    .courseStartTime(courseStartTime.format(pattern))
////                    .seatNum(seatNum)
////                    .build());
//            if (mathCourseStartTimes.length - prevIndex - 1 <= 0) {
//                break;
//            }
//            int courseIndex = random.nextInt(mathCourseStartTimes.length - prevIndex - 1) + prevIndex;
//            prevIndex = courseIndex + 1;
//            if (courseIndex > mathCourseStartTimes.length - 1 || prevIndex > mathCourseStartTimes.length - 1) {
//                break;
//            }
//            list.add(DemoCourseInfo.builder()
//                    .courseEndTime(mathCourseEndTimes[courseIndex])
//                    .courseId(String.valueOf(i))
//                    .courseStartTime(mathCourseStartTimes[courseIndex])
//                    .seatNum(seatNum)
//                    .build());
//        }
//        return list;
//    }
//    /**
//     * 8:00-9:10回復（1）
//     * 9:20-10:30回復（2）
//     * 10:40-11:50回復（3）
//     * 14:00-15:10回復（4）
//     * 15:20-16:30回復（5）
//     * 16:40-17:50回復（6）
//     * 18:30-19:40回復（7）
//     * 19:50-21:00回復（8）
//     * 21：10-22：20回復(9)
//     * 22：30-23：40回復（10）
//     * 23：50-01：00回復（11）
//     * @param language
//     * @param stage
//     * @param startTime
//     * @param endTime
//     * @return
//     */
//    public static String[] paintingCourseStartTimes = new String[] {
//            "8:00",
//            "9:20",
//            "10:40",
//            "14:00",
//            "15:20",
//            "16:40",
//            "18:30",
//            "19:50",
//            "21：10",
//            "22：30",
//            "23：50"
//    };
//    public static String[] paintingCourseEndTimes = new String[] {
//            "9:10",
//            "10:30",
//            "11:50",
//            "15:10",
//            "16:30",
//            "17:50",
//            "19:40",
//            "21:00",
//            "22:20",
//            "23:40",
//            "01:00"
//    };
//    private List<DemoCourseInfo> getDemoCourseInfos(LocalDateTime startTime) {
//        LocalDateTime now = LocalDateTime.now();
//        Random random = new Random();
//        int courseNum = random.nextInt(8) + 2;
//        List<DemoCourseInfo> list = new ArrayList<>();
//        int prevIndex = 0;
//        for (int i = 0; i < courseNum; i++) {
//            int seatNum = random.nextInt(3) + 1;
////            LocalDateTime courseStartTime = LocalDateTime.of(startTime.getYear(), startTime.getMonth(), startTime.getDayOfMonth(), i + 14, 0);
////            list.add(DemoCourseInfo.builder()
////                    .courseEndTime(courseStartTime.plusMinutes(40L).format(pattern))
////                    .courseId(String.valueOf(i))
////                    .courseStartTime(courseStartTime.format(pattern))
////                    .seatNum(seatNum)
////                    .build());
//            if (paintingCourseStartTimes.length - prevIndex - 1 <= 0) {
//                break;
//            }
//            int courseIndex = random.nextInt(paintingCourseStartTimes.length - prevIndex - 1) + prevIndex;
//            prevIndex = courseIndex + 1;
//            if (courseIndex > paintingCourseStartTimes.length - 1) {
//                break;
//            }
//            list.add(DemoCourseInfo.builder()
//                    .courseEndTime(paintingCourseEndTimes[courseIndex])
//                    .courseId(String.valueOf(i))
//                    .courseStartTime(paintingCourseStartTimes[courseIndex])
//                    .seatNum(seatNum)
//                    .build());
//        }
//        return list;
//    }
//
//    @ApiOperation(value = "获取画画科目当前有学位的课程")
//    @GetMapping("/demoCourseInfo/painting/get")
//    public Resp<List<DemoCourseInfo>> getPaintingDemoCourseInfo(@ApiParam(value = "教学语言")@RequestParam(value ="language")String language,
//                                                        @ApiParam(value = "阶段")@RequestParam(value ="stage")Integer stage,
//                                                        @ApiParam(value = "时间范围起始边界 格式：1999-08-07 18:00:00") @RequestParam(value ="startTime")@DateTimeFormat(pattern = DATE_TIME_PATTERN)LocalDateTime startTime,
//                                                        @ApiParam(value = "时间范围结束边界 格式：1999-08-07 23:00:00") @RequestParam(value ="endTime")@DateTimeFormat(pattern = DATE_TIME_PATTERN)LocalDateTime endTime) {
//        log.info("获取绘画科目当前有学位的课程: language:{},stage:{},startTime:{},endTime:{}", language, stage, startTime, endTime);
//        List<DemoCourseInfo> list = getDemoCourseInfos(startTime);
//        return Resp.success(list);
//    }
//
//    /**
//     * 数学试听课约课接口
//     * @param studentId
//     * @param courseId
//     */
//    @ApiOperation(value = "数学试听课约课接口")
//    @PostMapping("/studentInfo/{studentId}/math/{courseId}/book")
//    public Resp<String> bookMathCourse(@ApiParam(value = "学生ID", required = true)@PathVariable("studentId")Long studentId,
//                                   @ApiParam(value = "课程ID", required = true)@PathVariable("courseId")String courseId) {
//        log.info("学生约课: studentId:{},courseId:{}", studentId, courseId);
//        return Resp.success("约课成功");
//    }
//
//    /**
//     * 绘画试听课约课接口
//     * @param studentId
//     * @param courseId
//     */
//    @ApiOperation(value = "绘画试听课约课接口")
//    @GetMapping("/studentInfo/{studentId}/paiting/{courseId}/book")
//    public Resp<String> bookPaintingCourse(@ApiParam(value = "学生ID", required = true)@PathVariable("studentId")Long studentId,
//                                   @ApiParam(value = "课程ID", required = true)@PathVariable("courseId")String courseId) {
//        log.info("学生约课: studentId:{},courseId:{}", studentId, courseId);
//        return Resp.success("约课成功");
//    }
//
//
//}
